# 矩形以列表 [x1, y1, x2, y2] 的形式表示，其中 (x1, y1) 为左下角的坐标，(x2, y2) 是右上角的坐标。
# 如果相交的面积为正，则称两矩形重叠。需要明确的是，只在角或边接触的两个矩形不构成重叠。
# 给出两个矩形，判断它们是否重叠并返回结果。
#
# 输入：rec1 = [0,0,2,2], rec2 = [1,1,3,3]
# 输出：true
#
# 输入：rec1 = [0,0,1,1], rec2 = [1,0,2,1]
# 输出：false
#
# 两个矩形 rec1 和 rec2 都以含有四个整数的列表的形式给出。
# 矩形中的所有坐标都处于 -10^9 和 10^9 之间。
#
# https://leetcode-cn.com/problems/rectangle-overlap


""""
小黄鸭时间![x1, y1, x2, y2]
从植物学的角度上来说 已知两点的情况下 四个点的坐标分别是
    (x1,y2)     (x2,y2)

    (x1,y1)     (x2,y1)
其实只要定下第二个方形任意一个点的坐标范围在内就行
分别判断 y的边和x边是不是有范围内?
可以万能的双指针吗?
"""


# 执行用时 : 32 ms击败了 70.00% 的用户
# 内存消耗 : 13.5 MB 击败了 5.88% 的用户
# 嘛...反正强行堆条件是成功了,虽然难看了点...
class Solution:
    def isRectangleOverlap(self, rec1, rec2):
        if rec1[0] < rec2[0] < rec1[2] or rec1[0] < rec2[2] < rec1[2] or (min(rec2[0], rec2[2]) < min(rec1[0],
                                                                                                      rec1[2]) and max(
            rec2[0], rec2[2]) > max(rec1[0], rec1[2])):
            if rec1[1] < rec2[1] < rec1[3] or rec1[1] < rec2[3] < rec1[3] or (
                    min(rec2[1], rec2[3]) <= min(rec1[1], rec1[
                3]) and max(rec2[1], rec2[3]) >= max(rec1[1], rec1[3])):
                return True
        if rec2[0] < rec1[0] < rec2[2] or rec2[0] < rec1[2] < rec2[2] or (min(rec1[0], rec1[2]) <= min(rec2[0],
                                                                                                       rec2[2]) and max(
            rec1[0], rec1[2]) >= max(rec2[0], rec2[2])):
            if rec2[1] < rec1[1] < rec2[3] or rec2[1] < rec1[3] < rec2[3]:
                return True
        return False


rec1 = [0, 0, 1, 1]
rec2 = [1, 0, 2, 1]
test = Solution()
re = test.isRectangleOverlap(rec1, rec2)
print(re)


# 复盘:
# woc! 别人家的代码真好看!
# 逆向思维 判断不可能重叠的情况
def answer(rec1, rec2):
    if rec1[2] <= rec2[0] or rec2[2] <= rec1[0]:return False
    if rec1[3] <= rec2[1] or rec2[3] <= rec1[1]:return False
    return True

# 题干里给了点的位置,(x2, y2) 是右上角的坐标 其实隐含了大小区间的信息 x2 一定比 x1 大
# 同理y2 一定比y1大 这个可以锁定对比范围 ,我提交的代码里 min max 的写法完全没必要,且第2段if也可以整合到上一个里...
# 论审题的重要性!

